home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DOpus Plus
/
DOpus Plus.iso
/
Tutorial
/
C Guide
/
Code_Fragments
/
FreeSpace.c
next >
Wrap
C/C++ Source or Header
|
1998-09-18
|
1KB
|
46 lines
/*
FreeSpace.c (DiskInfo())
This routine returns the free space on each device (also RAM:)
in bytes. If it does return a negative value an error was occured
(ie. disk not validated,...).
*/
extern APTR mempool;
LONG DiskInfo( STRPTR diskname )
{
LONG freedisk;
DiskData *dd;
if( Strnicmp( diskname, "RAM:", 4) )
{
if( (dd = AllocMemH(mempool, sizeof(struct InfoData))) )
{
if( (dd->lock = Lock( diskname, SHARED_LOCK )) )
{
Info( dd->lock, dd->id );
UnLock( dd->lock );
if( dd->id->id_DiskState == ID_VALIDATED )
freedisk = (dd->id->id_NumBlocks - dd->id->id_NumBlocksUsed) * dd->id->id_BytesPerBlock;
else
freedisk = -dd->id->id_DiskState;
}
else
freedisk = -1;
FreeMemH( dd );
}
else
freedisk = -2;
}
else
freedisk = AvailMem( MEMF_ANY );
return freedisk;
}